YES 1.733
↳ HASKELL
↳ LR
((group :: [()] -> [[()]]) :: [()] -> [[()]]) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||
group :: Eq a => [a] -> [[a]]
|
|||||||||||||||||||||||||||
groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
|
import qualified List import qualified Prelude |
\(_,zs)→zs
zs0 (_,zs) = zs
\(ys,_)→ys
ys0 (ys,_) = ys
\(_,zs)→zs
zs1 (_,zs) = zs
\(ys,_)→ys
ys1 (ys,_) = ys
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
((group :: [()] -> [[()]]) :: [()] -> [[()]]) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||
group :: Eq a => [a] -> [[a]]
|
|||||||||||||||||||||||||||||||||||||
groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
|
import qualified List import qualified Prelude |
xs@(wu : wv)
wu : wv
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
((group :: [()] -> [[()]]) :: [()] -> [[()]]) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||
group :: Eq a => [a] -> [[a]]
|
|||||||||||||||||||||||||||||||||||||
groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
|
import qualified List import qualified Prelude |
undefined
| False
= undefined
undefined = undefined1
undefined0 True = undefined
undefined1 = undefined0 False
span p [] = ([],[]) span p (wu : wv)
| p wu
= (wu : ys,zs) | otherwise
= ([],wu : wv) where
vu43 = span p wv
ys = ys1 vu43
ys1 (ys,wx) = ys
zs = zs1 vu43
zs1 (ww,zs) = zs
span p [] = span3 p [] span p (wu : wv) = span2 p (wu : wv)
span2 p (wu : wv) =
span1 p wu wv (p wu) where
span0 p wu wv True = ([],wu : wv)
span1 p wu wv True = (wu : ys,zs) span1 p wu wv False = span0 p wu wv otherwise
vu43 = span p wv
ys = ys1 vu43
ys1 (ys,wx) = ys
zs = zs1 vu43
zs1 (ww,zs) = zs
span3 p [] = ([],[]) span3 xv xw = span2 xv xw
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
((group :: [()] -> [[()]]) :: [()] -> [[()]]) |
import qualified Maybe import qualified Prelude |
|||||||||||||||||||||||||||||||||||||
group :: Eq a => [a] -> [[a]]
|
|||||||||||||||||||||||||||||||||||||
groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
|
import qualified List import qualified Prelude |
(x : ys) : groupBy eq zs where
vv10 = span (eq x) xs
ys = ys0 vv10
ys0 (ys,vx) = ys
zs = zs0 vv10
zs0 (vy,zs) = zs
groupByZs xx xy xz = groupByZs0 xx xy xz (groupByVv10 xx xy xz)
groupByYs0 xx xy xz (ys,vx) = ys
groupByZs0 xx xy xz (vy,zs) = zs
groupByVv10 xx xy xz = span (xx xy) xz
groupByYs xx xy xz = groupByYs0 xx xy xz (groupByVv10 xx xy xz)
span1 p wu wv (p wu) where
span0 p wu wv True = ([],wu : wv)
span1 p wu wv True = (wu : ys,zs) span1 p wu wv False = span0 p wu wv otherwise
vu43 = span p wv
ys = ys1 vu43
ys1 (ys,wx) = ys
zs = zs1 vu43
zs1 (ww,zs) = zs
span2Ys yu yv = span2Ys1 yu yv (span2Vu43 yu yv)
span2Zs yu yv = span2Zs1 yu yv (span2Vu43 yu yv)
span2Zs1 yu yv (ww,zs) = zs
span2Span1 yu yv p wu wv True = (wu : span2Ys yu yv,span2Zs yu yv) span2Span1 yu yv p wu wv False = span2Span0 yu yv p wu wv otherwise
span2Vu43 yu yv = span yu yv
span2Span0 yu yv p wu wv True = ([],wu : wv)
span2Ys1 yu yv (ys,wx) = ys
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
(group :: [()] -> [[()]]) |
import qualified Maybe import qualified Prelude |
|||||||||
group :: Eq a => [a] -> [[a]]
|
|||||||||
groupBy :: (a -> a -> Bool) -> [a] -> [[a]]
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
import qualified List import qualified Prelude |
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
new_span2Ys(:(@0, yw3111)) → new_span2Zs(yw3111)
new_span2Zs(:(@0, yw3111)) → new_span2Ys(yw3111)
new_span2Zs(:(@0, yw3111)) → new_span2Zs(yw3111)
new_span2Ys(:(@0, yw3111)) → new_span2Ys(yw3111)
From the DPs we obtained the following set of size-change graphs:
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
new_groupBy(:(yw30, yw31)) → new_groupBy(new_groupByZs0(yw30, yw31))
new_span2Zs0(:(@0, yw3111)) → new_span2Zs1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
new_span2Ys1(yw3111, yw5, yw4) → :(@0, yw5)
new_groupByZs0(yw30, []) → []
new_groupByZs0(@0, :(@0, yw311)) → new_span2Zs0(yw311)
new_span2Ys0([]) → []
new_span2Zs1(yw3111, yw7, yw6) → yw6
new_span2Zs0([]) → []
new_span2Ys0(:(@0, yw3111)) → new_span2Ys1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
new_span2Zs1(x0, x1, x2)
new_groupByZs0(@0, :(@0, x0))
new_span2Ys0([])
new_span2Zs0(:(@0, x0))
new_span2Ys1(x0, x1, x2)
new_span2Ys0(:(@0, x0))
new_span2Zs0([])
new_groupByZs0(x0, [])
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
new_groupBy(:(yw30, yw31)) → new_groupBy(new_groupByZs0(yw30, yw31))
POL(:(x1, x2)) = 1 + x1
POL(@0) = 0
POL([]) = 0
POL(new_groupBy(x1)) = x1
POL(new_groupByZs0(x1, x2)) = 0
POL(new_span2Ys0(x1)) = 1 + x1
POL(new_span2Ys1(x1, x2, x3)) = 1
POL(new_span2Zs0(x1)) = 0
POL(new_span2Zs1(x1, x2, x3)) = x3
new_span2Zs0([]) → []
new_span2Zs0(:(@0, yw3111)) → new_span2Zs1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
new_groupByZs0(yw30, []) → []
new_span2Zs1(yw3111, yw7, yw6) → yw6
new_groupByZs0(@0, :(@0, yw311)) → new_span2Zs0(yw311)
new_span2Ys1(yw3111, yw5, yw4) → :(@0, yw5)
new_span2Ys0(:(@0, yw3111)) → new_span2Ys1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
↳ HASKELL
↳ LR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
new_span2Zs0(:(@0, yw3111)) → new_span2Zs1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
new_span2Ys1(yw3111, yw5, yw4) → :(@0, yw5)
new_groupByZs0(yw30, []) → []
new_groupByZs0(@0, :(@0, yw311)) → new_span2Zs0(yw311)
new_span2Ys0([]) → []
new_span2Zs1(yw3111, yw7, yw6) → yw6
new_span2Zs0([]) → []
new_span2Ys0(:(@0, yw3111)) → new_span2Ys1(yw3111, new_span2Ys0(yw3111), new_span2Zs0(yw3111))
new_span2Zs1(x0, x1, x2)
new_groupByZs0(@0, :(@0, x0))
new_span2Ys0([])
new_span2Zs0(:(@0, x0))
new_span2Ys1(x0, x1, x2)
new_span2Ys0(:(@0, x0))
new_span2Zs0([])
new_groupByZs0(x0, [])